/*
  大整数乘法
  题目描述
    求两个不超过 200 位的非负整数的积。
  输入
    有两行，每行是一个不超过 200 位的非负整数，没有多余的前导 0。
  输出
    一行，即相乘后的结果。结果里不能有多余的前导 0，即如果结果是 342，那么就不能输出为 0342。
  样例输入
    12345678900
    98765432100
  样例输出
    1219326311126352690000
*/

#include <bits/stdc++.h>

using namespace std;

int main() {
    string a, b = "1", c;
    int num[405] = {}; // 记录乘法的积每位上的数值! 注意: 这里定义数组的长度的方法 (200 + 200 + 5 = 405)!

    cin >> a >> b;

    // 1. 计算乘法的积每位上的数（不算进位）
    for (int i = 0; i < a.size(); i++) {
        for (int j = 0; j < b.size(); j++) {
            int a1 = a[i] - '0';  // a[i] 上的数对应的数值
            int b1 = b[j] - '0';  // b[j] 上的数对应的数值

            // 注意: i + j + 1, 此处 num[0] 预留出来了, 未赋值! 方便后续的处理!
            num[i + j + 1] = num[i + j + 1] + a1 * b1;
        }
    }

    // 2. 处理进位
    for (int i = a.size() + b.size() - 1; i >= 1; i--) {
        num[i - 1] += num[i] / 10; // 注意: 这里 num[0] 为积最低位上的数值!
        num[i] %= 10;
    }

    // 3. 累加(将乘法的积转换成 string）
    for (int i = a.size() + b.size() - 1; i >= 0; i--) {
        c = char(num[i] + '0') + c;
    }

    // 4. 去除前导零
    while (c.size() > 1 && c[0] == '0') {
        c.erase(0, 1);
    }

    cout << c;

    return 0;
}